---
title: SAIF.Presentation.Web.Controls.PopUps.Infragistics111 architecture
summary: Architectural responsibilities, boundaries, and interaction patterns.
status: draft
owner: <owner>
last_reviewed: 2026-08-21
library: SAIF.Presentation.Web.Controls.PopUps.Infragistics111
reference_type: package
---

# SAIF.Presentation.Web.Controls.PopUps.Infragistics111 architecture

This library is a pure presentation-tier component library of eight reusable ASP.NET WebForms user controls ("popups") that render as absolutely-positioned, draggable modal panels. Each control composes a library-embedded `.ascx` fragment at runtime, communicates results to its host page exclusively through a typed `ConfirmAction` event, and performs no persistence of its own; one control (`ImageMovePopup`) additionally embeds AD-group-based authorization logic for image and claim access.

## Responsibilities
- Render self-contained floating popup panels (an absolutely-positioned `<iframe>` "cover" plus a styled `<div>`) for capturing claim-activity notes, policy-activity notes, EFT/reason-code selections, notify-task details, image-move context, and generic confirm/alert dialogs.
- Load each control's markup from a library-embedded `.ascx` manifest resource at runtime via `GetResource()` and `Page.ParseControl()`, rather than the standard `UserControl` page-directive model.
- Gate popup visibility via a shared `Active` boolean property pattern, and communicate the user's choice back to the host page through a typed `Public Event ConfirmAction(...)`.
- Provide light client-side interaction support: drag repositioning (`/Resources/Scripts/PopupDrag.js`, external to this library), initial-focus scripting, and (for `PolicyActivityPopup`) a callback-driven free-form type toggle.
- Perform embedded, AD-group-based authorization checks (`ImageMovePopup` only) to gate visibility of claim-security-sensitive worker names and image-move eligibility.
- Cache reference/code-table data (`ClaimActivityPopup`) in `HttpContext.Current.Cache` for 8 hours to avoid repeated database round-trips.

## Component boundaries
- `ClaimActivityPopup`: composite control capturing Category/Type/note text for a Claim Activity note; delegates code-table retrieval to referenced business packages.
- `EFTPopup`: composite control for generic reason-code selection from a caller-supplied list; performs no delegated data access of its own.
- `ImageMovePopup`: composite control for claim/policy context entry and optional notify-task capture, gated by AD-group authorization checks (`CheckImageSecurity`, `CheckClaimSecurity`) against `SAIF.Framework.Security.clsSecurityPrincipal`/`clsAccountMaintProxy`.
- `NotifyPopup`: composite control for Notify ID/Date/Text entry with date/required-field validation; no delegated business calls beyond the `clsSmartDate` value type.
- `PolicyActivityPopup`: composite control for Policy Activity note capture, including free-form type entry via `ICallbackEventHandler` and a Save-and-Email option.
- `PopUpButton`: input control (`WebControls.Button` subclass) wrapping its click in a client-side `confirm()`/`alert()` dialog.
- `PopupControl`: composite script/postback bridge control that renders chained `confirm()`/`alert()` messages and relays the user's choice via `IPostBackEventHandler`.
- `TODOPopupControl`: composite control prompting for Diary/Claim task creation, optionally requiring and validating a Mail ID against employee data.
- `mdlUtilities`: internal (`Friend`) module providing the shared `GetResource()` embedded-markup loader used by every control's `CreateChildControls()`.
- Institutions typed `DataSet` (`Institutions.xsd`/`.xsc`/`.xss`): design-time scaffolding present in the project but not wired into any active control logic*.

## Interaction model
- Each control follows the same lifecycle: `CreateChildControls()` loads and parses the embedded `.ascx` fragment, locates child controls via `FindControl()`, and wires event handlers; `PreRender`/`Render()` binds data and emits markup only when `Active = True`.
- Controls communicate exclusively through a typed `ConfirmAction(Confirm As Boolean, e As <EventArgs>)` event raised from a Save/Yes button-click handler; the hosting application (outside this library) owns actual persistence.
- Where server-side business data is needed (code tables, claim/policy data), controls directly instantiate `clsMSOracleDataLayer` (hard-coded application code `"CLM"`/`"IMG"`) to obtain a `DataPortalInfo` context, then delegate to referenced business/view-layer static factory methods (`clsCodeCollection.GetCodeCollection`, `clsClaimActivityTypeCodeCollection.GetCodes`, `clsEmployeeData.GetDataByMailID`, `clsClaimData.GetData`, `clsPolicyData.GetPolicyData`) — this deviates from the typical SAIF BOF `IBusinessCriteria` pattern used elsewhere.
- `ImageMovePopup` additionally consults `SAIF.Framework.Security.clsSecurityPrincipal`/`clsAccountMaintProxy` at render time (`SetSecurityUserImage()`) and at explicit method-call time (`CheckImageSecurity`, `CheckClaimSecurity`) to gate claim/image visibility.
- Client-side drag support, focus scripting, and (for `NotifyPopup`/`EFTPopup`) async-partial-postback refresh handling are wired through inline `<script>` registration rather than server-side rendering logic.

## Design constraints
- No control implements `IBusinessCriteria` or exposes `CreateSQL`/`RetrieveSQL`; all persistence and business-rule logic live in referenced SAIF business/view packages, not in this library.
- Controls are hand-rolled composite/templated controls (embedded `.ascx` + `Page.ParseControl()`) rather than standard ASP.NET `UserControl` pages — each `.ascx` has no page directive or code-behind of its own.
- The client-side drag script (`/Resources/Scripts/PopupDrag.js`) is an external dependency resolved by URL from the consuming web application, not packaged in this library*.
- `mdlUtilities.GetResource()` falls back to a hard-coded local DLL path (`c:\netdev\components20\bin\...`) outside an `HttpContext` — a legacy design-time-only fallback not exercised in production*.
- This library's `frameworkDensity` is recorded as `0` in `dependency-resolution.json` for this run; no inherited SAIF framework base-class context is available or included.
- Authorization logic is concentrated entirely in `ImageMovePopup`; the other seven controls implement no independent security checks of their own.

## Architecture diagram
The following diagram shows the popup controls, their shared composition/utility dependency, and the referenced business/security packages they delegate to.

```mermaid
flowchart TD
    Host["Hosting web page<br>(Legal web app)"]
    Util["mdlUtilities<br>GetResource()"]
    subgraph Lib["SAIF.Presentation.Web.Controls.PopUps.Infragistics111"]
        CAP["ClaimActivityPopup"]
        EFT["EFTPopup"]
        IMP["ImageMovePopup"]
        NP["NotifyPopup"]
        PAP["PolicyActivityPopup"]
        PB["PopUpButton"]
        PC["PopupControl"]
        TODO["TODOPopupControl"]
    end
    Vendor["Infragistics WebUI v11.1<br>WebDateTimeEdit"]
    BizView["SAIF.Business.View.Policy<br>(project reference)"]
    BizPkgs["SAIF.BOF.Business /<br>SAIF.BOF.Business.View.Claim<br>(NuGet packages)"]
    Security["SAIF.Framework.Security<br>clsSecurityPrincipal / clsAccountMaintProxy"]

    Host -->|"sets Active, properties"| Lib
    Lib -->|"ConfirmAction event"| Host
    CAP --> Util
    EFT --> Util
    IMP --> Util
    NP --> Util
    PAP --> Util
    TODO --> Util
    NP --> Vendor
    IMP --> Vendor
    CAP --> BizPkgs
    TODO --> BizPkgs
    IMP --> BizPkgs
    IMP --> BizView
    IMP --> Security
```

## Sequence diagram
The following diagram shows the primary `ImageMovePopup` sequence: context entry, delegated claim-security check, and the confirm/save round trip with the hosting page.

```mermaid
sequenceDiagram
    participant Host as Hosting page
    participant IMP as ImageMovePopup
    participant Sec as clsSecurityPrincipal
    participant Biz as clsClaimData (referenced)

    Host->>IMP: Set Active = True, ImageFileCode
    IMP->>IMP: CreateChildControls() / GetResource()
    Host->>IMP: txtContextNum TextChanged (postback)
    IMP->>Biz: GetData(DataPortalInfo, contextNum)
    Biz-->>IMP: claim data (incl. strClaimSecurity)
    IMP->>Sec: CheckClaimSecurity() -> IsAuthorized(ADSG_*)
    Sec-->>IMP: allow/deny per resource flag
    IMP-->>Host: Worker name or "Confidential"
    Host->>IMP: cmdSave click
    IMP->>IMP: EditContext() / EditAlertControls()
    IMP-->>Host: ConfirmAction(True, ImageMoveEventArgs)
```

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Security and authorization](security-authorization.md)
- [Control catalog](control-catalog.md)
- [Configuration settings](configuration.md)
- [API reference](api/index.md)

## Sources
- `SAIF.Presentation.Web.Controls.PopUps.Infragistics111\ClaimActivityPopup.vb`, `EFTPopup.vb`, `ImageMovePopup.vb`, `NotifyPopup.vb`, `PolicyActivityPopup.vb`, `PopUpButton.vb`, `PopupControl.vb`, `TODOPopupControl.vb`, `mdlUtilities.vb`
- `.saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK012-analysis.md`
- `.saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/analysis/TSK1C-005-security-saif-presentation-web-controls-popups-infragistics111.md`
- `.saifdocgen/state/runs/20260821-113120-claims-bof-web-legal/dependency-resolution.json`
